import { createApp } from 'vue'
import { createPinia } from 'pinia';
import axios from 'axios'
// import { createRouter,createWebHashHistory } from 'vue-router'
// import { createStore } from 'vuex'
// import Home from './views/Home.vue'
// import Login from './views/Login.vue'
// import ColumnDetail from './components/ColumnDetail.vue'
import router from './router'
import store from './store';

import App from './App.vue'
import 'easymde/dist/easymde.min.css'
// 替换 baseURL
axios.defaults.baseURL = 'http://apis.imooc.com/api'//默认会带上
// 下面的 icode 值是从慕课网获取的 token 值，可以在课程右侧的项目接口校验码找到
axios.interceptors.request.use(config =>{
    store.commit('setLoading',true)
    store.commit('setError', { status: false, message:'' })
    // get 请求，添加到 url 中
    config.params = { ...config.params, icode:'D6A9E386D9F12631' }
    // 其他请求，添加到 body 中
    // 如果是上传文件，添加到 FormData 中
    if (config.data instanceof FormData) {
        config.data.append('icode', 'D6A9E386D9F12631')
    } else {
    // 普通的 body 对象，添加到 data 中
        config.data = { ...config.data, icode: 'D6A9E386D9F12631' }
    }
        return config
    })

axios.interceptors.response.use(config =>{
    setTimeout(()=>{
        store.commit('setLoading',false)
    },1000)
    return config
}, e=>{
    const { error } = e.response.data;
    // 可以看看当登陆错误的时候，这里是否被触发
    // 这个 全局的 error 的信息是在这里设置的
    store.commit('setError', { status: true, message:error })
    store.commit('setLoading',false)
    // return Promise.reject(error);
    return Promise.reject(e.response.data);
})

/* const store = createStore({
    state:{
        count:0
    },
    mutations:{
        add(state){
            state.count++
        }
    }
}))
store.commit('add');
const routerHistory = createWebHashHistory()
const router = createRouter({
    history: routerHistory,
    routes:[
        {
            path:'/',
            name:'home',
            component:Home
        },
        {
            path:'/Login',
            name:'login',
            component:Login
        },
        {
            path:'/column/:id',
            name:'column',
            component:ColumnDetail
        }
    ]
}) */
const pinia = createPinia()
const app = createApp(App)
app.use(router)
app.use(store)
app.use(pinia)
app.mount('#app')
